gdk_device_get_n_axes
gdk_device_get_n_keys
gdk_device_get_axes
-gdk_device_warp
gdk_device_get_seat
<SUBSECTION>
static void gdk_broadway_device_set_surface_cursor (GdkDevice *device,
GdkSurface *surface,
GdkCursor *cursor);
-static void gdk_broadway_device_warp (GdkDevice *device,
- gdouble x,
- gdouble y);
static void gdk_broadway_device_query_state (GdkDevice *device,
GdkSurface *surface,
GdkSurface **child_surface,
device_class->get_history = gdk_broadway_device_get_history;
device_class->get_state = gdk_broadway_device_get_state;
device_class->set_surface_cursor = gdk_broadway_device_set_surface_cursor;
- device_class->warp = gdk_broadway_device_warp;
device_class->query_state = gdk_broadway_device_query_state;
device_class->grab = gdk_broadway_device_grab;
device_class->ungrab = gdk_broadway_device_ungrab;
{
}
-static void
-gdk_broadway_device_warp (GdkDevice *device,
- gdouble x,
- gdouble y)
-{
-}
-
static void
gdk_broadway_device_query_state (GdkDevice *device,
GdkSurface *surface,
GDK_DEVICE_GET_CLASS (device)->ungrab (device, time_);
}
-/**
- * gdk_device_warp:
- * @device: the device to warp.
- * @x: the X coordinate of the destination.
- * @y: the Y coordinate of the destination.
- *
- * Warps @device in @display to the point @x,@y,
- * unless the device is confined to a surface by a grab,
- * in which case it will be moved
- * as far as allowed by the grab. Warping the pointer
- * creates events as if the user had moved the mouse
- * instantaneously to the destination.
- *
- * Note that the pointer should normally be under the
- * control of the user. This function was added to cover
- * some rare use cases like keyboard navigation support
- * for the color picker in the #GtkColorSelectionDialog.
- **/
-void
-gdk_device_warp (GdkDevice *device,
- gint x,
- gint y)
-{
- g_return_if_fail (GDK_IS_DEVICE (device));
-
- GDK_DEVICE_GET_CLASS (device)->warp (device, x, y);
-}
-
/* Private API */
void
_gdk_device_reset_axes (GdkDevice *device)
void gdk_device_ungrab (GdkDevice *device,
guint32 time_);
-GDK_AVAILABLE_IN_ALL
-void gdk_device_warp (GdkDevice *device,
- gint x,
- gint y);
-
GDK_AVAILABLE_IN_ALL
GdkSurface *gdk_device_get_last_event_surface (GdkDevice *device);
GdkSurface *surface,
GdkCursor *cursor);
- void (* warp) (GdkDevice *device,
- gdouble x,
- gdouble y);
void (* query_state) (GdkDevice *device,
GdkSurface *surface,
GdkSurface **child_surface,
gdk_wayland_device_update_surface_cursor (device);
}
-static void
-gdk_wayland_device_warp (GdkDevice *device,
- gdouble x,
- gdouble y)
-{
-}
-
static void
get_coordinates (GdkDevice *device,
double *x,
device_class->get_history = gdk_wayland_device_get_history;
device_class->get_state = gdk_wayland_device_get_state;
device_class->set_surface_cursor = gdk_wayland_device_set_surface_cursor;
- device_class->warp = gdk_wayland_device_warp;
device_class->query_state = gdk_wayland_device_query_state;
device_class->grab = gdk_wayland_device_grab;
device_class->ungrab = gdk_wayland_device_ungrab;
static void gdk_x11_device_core_set_surface_cursor (GdkDevice *device,
GdkSurface *surface,
GdkCursor *cursor);
-static void gdk_x11_device_core_warp (GdkDevice *device,
- gdouble x,
- gdouble y);
static void gdk_x11_device_core_query_state (GdkDevice *device,
GdkSurface *surface,
GdkSurface **child_surface,
device_class->get_history = gdk_x11_device_core_get_history;
device_class->get_state = gdk_x11_device_core_get_state;
device_class->set_surface_cursor = gdk_x11_device_core_set_surface_cursor;
- device_class->warp = gdk_x11_device_core_warp;
device_class->query_state = gdk_x11_device_core_query_state;
device_class->grab = gdk_x11_device_core_grab;
device_class->ungrab = gdk_x11_device_core_ungrab;
xcursor);
}
-static void
-gdk_x11_device_core_warp (GdkDevice *device,
- gdouble x,
- gdouble y)
-{
- GdkDisplay *display;
- Display *xdisplay;
- Window dest;
- GdkX11Screen *screen;
-
- display = gdk_device_get_display (device);
- xdisplay = GDK_DISPLAY_XDISPLAY (display);
- screen = GDK_X11_DISPLAY (display)->screen;
- dest = GDK_SCREEN_XROOTWIN (screen);
-
- XWarpPointer (xdisplay, None, dest, 0, 0, 0, 0,
- round (x * screen->surface_scale),
- round (y * screen->surface_scale));
-}
-
static void
gdk_x11_device_core_query_state (GdkDevice *device,
GdkSurface *surface,
static void gdk_x11_device_xi2_set_surface_cursor (GdkDevice *device,
GdkSurface *surface,
GdkCursor *cursor);
-static void gdk_x11_device_xi2_warp (GdkDevice *device,
- gdouble x,
- gdouble y);
static void gdk_x11_device_xi2_query_state (GdkDevice *device,
GdkSurface *surface,
GdkSurface **child_surface,
device_class->get_state = gdk_x11_device_xi2_get_state;
device_class->set_surface_cursor = gdk_x11_device_xi2_set_surface_cursor;
- device_class->warp = gdk_x11_device_xi2_warp;
device_class->query_state = gdk_x11_device_xi2_query_state;
device_class->grab = gdk_x11_device_xi2_grab;
device_class->ungrab = gdk_x11_device_xi2_ungrab;
GDK_SURFACE_XID (surface));
}
-static void
-gdk_x11_device_xi2_warp (GdkDevice *device,
- gdouble x,
- gdouble y)
-{
- GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device);
- GdkDisplay *display = gdk_device_get_display (device);
- GdkX11Screen *screen = GDK_X11_DISPLAY (display)->screen;
- Window dest = GDK_DISPLAY_XROOTWIN (display);
-
- XIWarpPointer (GDK_SCREEN_XDISPLAY (screen),
- device_xi2->device_id,
- None, dest,
- 0, 0, 0, 0,
- round (x * screen->surface_scale),
- round (y * screen->surface_scale));
-}
-
static void
gdk_x11_device_xi2_query_state (GdkDevice *device,
GdkSurface *surface,
#include "gdkselectioninputstream-x11.h"
#include "gdkselectionoutputstream-x11.h"
+#include <math.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
if (dx != 0 || dy != 0)
{
+ GdkDisplay *display;
+ Display *xdisplay;
+ GdkX11Screen *screen;
+ Window dest;
+
x11_drag->last_x += dx;
x11_drag->last_y += dy;
- gdk_device_warp (pointer, x11_drag->last_x, x11_drag->last_y);
+
+ display = gdk_event_get_display ((GdkEvent *)event);
+ xdisplay = GDK_DISPLAY_XDISPLAY (display);
+ screen = GDK_X11_DISPLAY (display)->screen;
+ dest = GDK_SCREEN_XROOTWIN (screen);
+
+ XWarpPointer (xdisplay, None, dest, 0, 0, 0, 0,
+ round (x11_drag->last_x * screen->surface_scale),
+ round (x11_drag->last_y * screen->surface_scale));
}
gdk_drag_update (drag, x11_drag->last_x, x11_drag->last_y, state,